package com.ruoyi.slip.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 员工工资条明细对象 salary_slip
 * 
 * @author cxs
 * @date 2025-05-30
 */
public class SalarySlip extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 工资条ID，主键 */
    private Long id;

    /** 用户ID，关联员工表 */
    @Excel(name = "用户ID，关联员工表")
    private Long userId;

    /** 加班时长(小时) */
    @Excel(name = "加班时长(小时)")
    private BigDecimal overtimeHours;

    /** 请假时长(小时) */
    @Excel(name = "请假时长(小时)")
    private BigDecimal leaveHours;

    /** 基本工资 */
    @Excel(name = "基本工资")
    private BigDecimal basicSalary;

    /** 岗位工资 */
    @Excel(name = "岗位工资")
    private BigDecimal positionSalary;

    /** 绩效工资 */
    @Excel(name = "绩效工资")
    private BigDecimal performanceSalary;

    /** 加班补贴 */
    @Excel(name = "加班补贴")
    private BigDecimal overtimeAllowance;

    /** 请假扣款 */
    @Excel(name = "请假扣款")
    private BigDecimal leaveDeduction;

    /** 个人所得税 */
    @Excel(name = "个人所得税")
    private BigDecimal incomeTax;

    /** 社保扣除 */
    @Excel(name = "社保扣除")
    private BigDecimal socialInsurance;

    /** 公积金扣除 */
    @Excel(name = "公积金扣除")
    private BigDecimal housingFund;

    /** 奖金 */
    @Excel(name = "奖金")
    private BigDecimal bonus;

    /** 实发工资 */
    @Excel(name = "实发工资")
    private BigDecimal totalSalary;

    /** 工资月份，格式YYYY-MM */
    @Excel(name = "工资月份，格式YYYY-MM")
    private String salaryMonth;

    /** 关联的工资发放记录ID */
    private Long paymentId;

    /** 删除标志（0代表存在 2代表删除） */
    private Long delFlag;

    /** 记录创建时间 */
    private Date createdAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }

    public void setOvertimeHours(BigDecimal overtimeHours) 
    {
        this.overtimeHours = overtimeHours;
    }

    public BigDecimal getOvertimeHours() 
    {
        return overtimeHours;
    }

    public void setLeaveHours(BigDecimal leaveHours) 
    {
        this.leaveHours = leaveHours;
    }

    public BigDecimal getLeaveHours() 
    {
        return leaveHours;
    }

    public void setBasicSalary(BigDecimal basicSalary) 
    {
        this.basicSalary = basicSalary;
    }

    public BigDecimal getBasicSalary() 
    {
        return basicSalary;
    }

    public void setPositionSalary(BigDecimal positionSalary) 
    {
        this.positionSalary = positionSalary;
    }

    public BigDecimal getPositionSalary() 
    {
        return positionSalary;
    }

    public void setPerformanceSalary(BigDecimal performanceSalary) 
    {
        this.performanceSalary = performanceSalary;
    }

    public BigDecimal getPerformanceSalary() 
    {
        return performanceSalary;
    }

    public void setOvertimeAllowance(BigDecimal overtimeAllowance) 
    {
        this.overtimeAllowance = overtimeAllowance;
    }

    public BigDecimal getOvertimeAllowance() 
    {
        return overtimeAllowance;
    }

    public void setLeaveDeduction(BigDecimal leaveDeduction) 
    {
        this.leaveDeduction = leaveDeduction;
    }

    public BigDecimal getLeaveDeduction() 
    {
        return leaveDeduction;
    }

    public void setIncomeTax(BigDecimal incomeTax) 
    {
        this.incomeTax = incomeTax;
    }

    public BigDecimal getIncomeTax() 
    {
        return incomeTax;
    }

    public void setSocialInsurance(BigDecimal socialInsurance) 
    {
        this.socialInsurance = socialInsurance;
    }

    public BigDecimal getSocialInsurance() 
    {
        return socialInsurance;
    }

    public void setHousingFund(BigDecimal housingFund) 
    {
        this.housingFund = housingFund;
    }

    public BigDecimal getHousingFund() 
    {
        return housingFund;
    }

    public void setBonus(BigDecimal bonus) 
    {
        this.bonus = bonus;
    }

    public BigDecimal getBonus() 
    {
        return bonus;
    }

    public void setTotalSalary(BigDecimal totalSalary) 
    {
        this.totalSalary = totalSalary;
    }

    public BigDecimal getTotalSalary() 
    {
        return totalSalary;
    }

    public void setSalaryMonth(String salaryMonth) 
    {
        this.salaryMonth = salaryMonth;
    }

    public String getSalaryMonth() 
    {
        return salaryMonth;
    }

    public void setPaymentId(Long paymentId) 
    {
        this.paymentId = paymentId;
    }

    public Long getPaymentId() 
    {
        return paymentId;
    }

    public void setDelFlag(Long delFlag) 
    {
        this.delFlag = delFlag;
    }

    public Long getDelFlag() 
    {
        return delFlag;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("userId", getUserId())
            .append("overtimeHours", getOvertimeHours())
            .append("leaveHours", getLeaveHours())
            .append("basicSalary", getBasicSalary())
            .append("positionSalary", getPositionSalary())
            .append("performanceSalary", getPerformanceSalary())
            .append("overtimeAllowance", getOvertimeAllowance())
            .append("leaveDeduction", getLeaveDeduction())
            .append("incomeTax", getIncomeTax())
            .append("socialInsurance", getSocialInsurance())
            .append("housingFund", getHousingFund())
            .append("bonus", getBonus())
            .append("totalSalary", getTotalSalary())
            .append("salaryMonth", getSalaryMonth())
            .append("paymentId", getPaymentId())
            .append("delFlag", getDelFlag())
            .append("createdAt", getCreatedAt())
            .toString();
    }
}
